package savet.gui.modelos;

import java.util.Date;
import savet.entidades.Trabalhador;

/**
 *
 * @author Adisson Marinho
 */
public class ModeloVinculos extends AbstractTrabalhadoresModel {

    private static final String[] colunas = {"Nome", "PIS", "Admissão", "Demissão",
        "MA", "APZ", "Gen", "Pg"};

    public int getColumnCount() {
        return colunas.length;
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return String.class;
            case 1:
                return String.class;
            case 2:
                return Date.class;
            case 3:
                return Date.class;
            case 4:
                return String.class;
            case 5:
                return Boolean.class;
            case 6:
                return String.class;
            case 7:
                return Integer.class;
            default:
                return Object.class;
        }
    }

    @Override
    public String getColumnName(int column) {
        return colunas[column];
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        Trabalhador t = trabalhadores.get(rowIndex);
        switch (columnIndex) {
            case 0:
                return t.getNome();
            case 1:
                return t.getPis();
            case 2:
                return t.getAdmissao();
            case 3:
                return t.getAfastamento();
            case 4:
                return t.getCodAfastamento();
            case 5:
                return t.isAprendiz();
            case 6:
                return t.getGenero();
            case 7:
                return t.getLivro().getPagina();
            default:
                return null;
        }
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        Trabalhador t = trabalhadores.get(rowIndex);
        System.out.println("setting in " + columnIndex + " - " + getColumnName(columnIndex) + " a value " + aValue);
        if (aValue != null) {
            switch (columnIndex) {
                case 0:
                    t.setNome(aValue.toString());
                    break;
                case 1:
                    t.setPis(aValue.toString());
                    break;
                case 2:
                    t.setAdmissao((Date) aValue);
                    break;
                case 3:
                    t.setAfastamento((Date) aValue);
                    break;
                case 4:
                    t.setCodAfastamento(aValue.toString());
                    break;
                case 5:
                    t.setAprendiz((Boolean) aValue);
                    break;
                case 6:
                    t.setGenero(aValue.toString());
                    break;
                case 7:
                    t.getLivro().setPagina((Integer) aValue);
                    break;
            }
            fireTableCellUpdated(rowIndex, columnIndex);
        }
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return columnIndex == getColumnCount() - 1 ? false : true;
    }

    public void elementoAdicionado(Trabalhador trabalhador) {
        fireTableRowsInserted(trabalhadores.size() - 1, trabalhadores.size() - 1);
    }

    public void elementoRemovido(Trabalhador trabalhador) {
        fireTableRowsDeleted(trabalhadores.size() - 1, trabalhadores.size() - 1);
    }
}
